package JZOffer;

import java.util.*;

/*
输入一个正整数数组，把数组里所有数字拼接起来排成一个数，
打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，
则打印出这三个数字能排成的最小数字为321323。
 */
public class _把数组排成最小的数_ {
    public static void main(String[] args) {
        _把数组排成最小的数_ c = new _把数组排成最小的数_();
        _把数组排成最小的数_.Solution s = c.getSolution();
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] numberarr = new int[n];
        while (n-- > 0) {
            numberarr[n] = sc.nextInt();
        }
        System.out.println(s.PrintMinNumber(numberarr));
    }

    Solution getSolution() {
        return new Solution();
    }

    class Solution {

        public String PrintMinNumber(int[] numbers) {
            int n;
            String s = "";
            ArrayList<Integer> list = new ArrayList<Integer>();
            n = numbers.length;
            for (int i = 0; i < n; i++) {
                list.add(numbers[i]);
            }
            Collections.sort(list, new Comparator<Integer>() {

                public int compare(Integer str1, Integer str2) {
                    String s1 = str1 + "" + str2;
                    String s2 = str2 + "" + str1;
                    return s1.compareTo(s2);
                }
            });

            for (int j : list) {
                s += j;
            }
            return s;
        }
    }
}
